package com.oocl.romdonNum;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class Bootstrap {
	
	public static void main(String[] args) {
		
		///概率最大值为1
		///参数一：需要命中的数字
		///参数二：需要命中的概率,0~1
		///参数三：实验操作的次数
		///返回输出实际的命中概率和次数
		generat(4, 0.2, 1000);
		
		/**
		 * 概率和如果超过1，则以第一个参数的概率为目标，最大为1
		 * 参数一：需要命中的数字1；
		 * 参数二：需要命中的数字2；
		 * 参数三：需要命中数字1的概率
		 * 参数四：需要命中数字2的概率
		 * 参数五：实验操作的总次数
		 */
		generat(1, 3, 0.15, 0.11, 1000);
	}
	
	/**
	 * 随机抽取1-10 的数，总共抽取sum次。  
	 * hit是每次命中的数字，count是实际命中的次数。由于需求没要求返回。
	 * @param num   需要命中的数字
	 * @param pro	需要命中数字的概率
	 * @param sum	实验的总次数
	 * @return 		实际命中的概率
	 */
	public static void generat(int num, double pro,int sum){
		int[] numbers = {1,2,3,4,5,6,7,8,9,10};
		int count = 0;
		int hit;
		List<Integer> list = new ArrayList<Integer>();
		for(int x : numbers){
			if(x!=num){
				list.add(x);
			}
		}
		
		for (int i = 0; i < sum; i++) {	
			double probability = Math.random();
			if(probability<pro & probability<1){
				hit = num;
				count++;
			}else{
				int index = (int) (Math.random()*9);
				hit = numbers[index];
			}
		}
		
		System.out.println("总共抽取" + sum + "次;");
		System.out.println("一共命中" + count + "次" + "数字" + num);
		System.out.println("实际命中的概率为：" + count*1.0/sum);
		System.out.println();
			
	}
	
	public static void generat(int num1, int num2, double pro1, double pro2, int sum){
		int[] numbers = {1,2,3,4,5,6,7,8,9,10};
		int count1 = 0;
		int count2 = 0;
		int hit;
		List<Integer> list = new ArrayList<Integer>();
		for(int x : numbers){
			if(x!=num1 && x!=num2){
				list.add(x);
			}
		}

		for (int i = 0; i < sum; i++) {
			double probability = Math.random();
			if(probability<pro1 & probability<1){
				hit = num1;
				count1++;
			}else if((probability>=pro1 && probability<(pro1+pro2)) & probability<1){
				hit = num2;
				count2++;
			}else{
				int index = (int) (Math.random()*9);
				hit = numbers[index];
			}
		}	
		
		System.out.println("总共抽取" + sum + "次");
		System.out.println("一共命中" + count1 + "次数字" + num1 );
		System.out.println("一共命中" + count2 + "次数字" + num2 );
		System.out.println("实际命中的概率分别为：" + count1*1.0/sum + "和" + count2*1.0/sum);
	}
	
}
